﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

namespace AgendaManager.Service
{
    public class PlanoDAO : DAOBase
    {
        public static bool SetPlanos(List<Plano> planos)
        {
            try
            {
                foreach (Plano plano in planos)
                {
                    if (plano.Id != null)
                    {
                        UpdatePlano(plano);
                    }
                    else
                    {
                        CreatePlano(plano);
                    }
                }

                return true;
            }
            catch (Exception)
            {
                throw;
            }
        }

        internal static bool CreatePlano(Plano plano)
        {
            try
            {
                int planoId = GetNextId(plano);

                if (planoId != 0)
                {
                    plano.Id = planoId;
                    return CreateEntity(plano);
                }
                return false;
            }
            catch (Exception)
            {
                throw new Exception("No se pudo crear el Plano");
            }
            
        }

        private static void UpdatePlano(Plano plano)
        {
            try
            {
                UpdateEntity(plano);
            }
            catch (Exception)
            {
                throw new Exception("No se pudo actualizar el Plano");
            }
        }

        internal static List<Plano> RetrieveEntitiesWhere(object dto, string where)
        {
            List<Plano> dtos = new List<Plano>();

            DataTable dt = GetDataTableWhere(dto, where);

            if (dt.Rows.Count > 0)
                dtos = LlenarPlanos(dto, dt);

            return dtos;
        }

        private static List<Plano> LlenarPlanos(object dto, DataTable dt)
        {
            List<Plano> dtos = new List<Plano>();

            foreach (DataRow dr in dt.Rows)
            {
                Plano aux = new Plano();
                PoblarObjetoDesdeDataRow(aux, dr);

                dtos.Add(aux);
            }

            return dtos;
        }
    }
}